/**
 * @author kyle / http://nikai.us/
 */

import DataSet from "../../Hmap/DataSet";
// import { draw as drawHoneycomb } from "../shape/honeycomb";

export default {
  drawDataSet: function(context, dataSet, options) {
    var data = dataSet instanceof DataSet ? dataSet.get() : dataSet;
    for (var i = 0, len = data.length; i < len; i++) {
      var item = data[i];
      this.draw(context, item, options);
    }
  },
  // 热力线图调用这个 方法绘制的
  draw: function(context, data, options) {
    // 绘制类型
    var type = data.geometry.type;
    // 坐标点
    var coordinates = data.geometry._coordinates || data.geometry.coordinates;
    // 形状
    var symbol = data.symbol || options.symbol || "circle";
    switch (type) {
      case "Point":
        // 形状尺寸
        var size =
          data._size || data.size || options._size || options.size || 5;
        // 如果设置为圆形
        if (symbol === "circle") {
          // 绘制圆  参数，圆心坐标x,圆心坐标y, 圆的半径，起始角，结束角， 逆时针或顺时针绘制（可选）。
          context.arc(coordinates[0], coordinates[1], size, 0, Math.PI * 2);
        } else if (symbol === "rect") {
          // 绘制矩形
          context.rect(
            coordinates[0] - size / 2,
            coordinates[1] - size / 2,
            size,
            size
          );
        }
        break;
      default:
        console.error("type" + type + "is not support now!");
        break;
    }
  },
  //绘制线
  drawLineString: function(context, coordinates) {
    // 遍历坐标点数组
    for (var j = 0; j < coordinates.length; j++) {
      // 获取坐标点x,y
      var x = coordinates[j][0];
      var y = coordinates[j][1];
      // 如果是第一个坐标点，则从此点开始画线
      if (j == 0) {
        context.moveTo(x, y);
      } else {
        // 若不是第一个坐标点，则将线连接到此点
        context.lineTo(x, y);
      }
    }
  },

  drawPolygon: function(context, coordinates) {
    context.beginPath();

    for (var i = 0; i < coordinates.length; i++) {
      var coordinate = coordinates[i];

      context.moveTo(coordinate[0][0], coordinate[0][1]);
      for (var j = 1; j < coordinate.length; j++) {
        context.lineTo(coordinate[j][0], coordinate[j][1]);
      }
      context.lineTo(coordinate[0][0], coordinate[0][1]);
      context.closePath();
    }
  }
};
